Synchronous mirroring of data sets assures that a backup copy of the data set is always a perfect replica of the current production copy of the data set. Therefore, failover can be performed automatically without human intervention since there is no question about the quality of the backup data.
Unfortunately, synchronous mirroring requires that an application's write be stalled until both the current production data set and the backup data set have been updated. This need to synchronize writes causes unacceptable performance loss in many real-world situations. The performance loss is particularly high when the backup data set is updated over a slow network link such as over a WAN to a cloud storage provider.
Asynchronous mirroring of data sets greatly reduces the performance penalty discussed above. With asynchronous mirroring, an application's write is acknowledged before the backup data set has been updated.
Unfortunately, this relaxed update comes at a cost. At the time of a failover, the backup copy is in an unknown state that may or may not represent the state of the production data at the time of the failover. This uncertainty greatly complicates the failover process. Essentially the challenge comes down to how a storage administrator determines that the quality of the data in the backup data set is “good enough” to support a successful failover.